class MapList:
	def __init__(self):
		self.map = {}
	
	def __str__(self):
		return str(self.map)
		
	def add(self, k, v):
		if self.map.has_key(k):
			self.map[k].append(v)
		else:
			self.map[k] = [v]
			
	def set(self, k, v, index=-1):
		if self.map.has_key(k):
			self.map[k][index] = v
		else:
			self.map[k] = [v]
			
	def get(self,k, index=-1):
		return self.map[k][index]
		
	def getList(self,k):
		return self.map[k]
		
	def delMap(self, k):
		if self.map.has_key(k):
			del self.map[k]
			
	def delList(self, k, index=-1):
		if self.map.has_key(k):
			del self.map[k][index]
		
	def hasKey(self, k, index=-1):
		if self.map.has_key(k):
			l = self.map[k]
			if index < 0:
				index += 1
			if len(l) > abs(index):
				return True
		return False

	def keys(self):
		return self.map.keys()
		
	def mapSize(self):
		return len(self.map)
		
	def listSize(self, k):
		if self.map.has_key(k):
			return len(self.map[k])
		else:
			return 0
	
	def size(self):
		size = 0
		for i in self.map.items():
			size += len(i[1])
		return size
